package com.ssb.util.sign;

/**
 * @author: Don
 * @date: 2018/9/6 17:17
 * @description:
 */
public class StringHelper {
    /**
     * 将 byte 转换为 16进制表示字符串，如果转换后只有1个字符，则在前面补 0
     * @param sourceBytes 待转换的数据
     * @return 16进制字符串
     */
    public static String bytesToHexString(byte[] sourceBytes)
    {
        if(sourceBytes == null || sourceBytes.length == 0)
            return "";
        StringBuffer buffer = new StringBuffer(sourceBytes.length * 2);
        for(byte sourceByte : sourceBytes)
        {
            buffer.append(getHexChar((sourceByte>>4) & 0x0f))
                    .append(getHexChar(sourceByte & 0x0f));
        }
        return buffer.toString();
    }
    /**
     * 根据值获取对应的 16 进制表示字符
     * @param charValue
     * @return
     */
    private static char getHexChar(int charValue)
    {
        if(charValue <= 9)
            return (char)('0' + charValue);
        else
            return (char)('a' + charValue - 10);
    }
    /**
     * 从字符串中获取两个标签之间的内容
     * @param source 源数据字符串
     * @param start 开始标签
     * @param end 结束标签
     * @return
     */
    public static String GetMiddleString(String source, String start, String end)
    {
        if(isNullOrEmpty(source))
            return null;
        int startIndex, endIndex;
        startIndex = source.indexOf(start);
        endIndex = source.indexOf(end);
        if(startIndex >= 0 && endIndex > startIndex)
            return source.substring(startIndex + start.length(), endIndex);
        return null;
    }
    /**
     * 判断字符串是否为空或者 null
     * @param source
     * @return
     */
    public static boolean isNullOrEmpty(String source)
    {
        if(source == null || source.length() == 0)
            return true;
        return false;
    }
}
